package service.produtos;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;

import model.Farmacia;
import model.Item;
import model.Produto;
import model.produtos.Remedio;
import util.DataUtil;

public class RemedioService {
	
	protected EntityManager entityManager;
	
	public RemedioService(EntityManager entityManager) {
		this.entityManager = entityManager;
	}
	
	public Remedio criaRemedio(String nome, Long preco,
			int estoque, String tarjaPreta, Long dataFab, Long dataValid) {
		Remedio rem = new Remedio();
		rem.setNome(nome);
		rem.setPrecoVenda(preco);
		rem.setQuantidadeEstoque(estoque);
		rem.setTarjaPreta(tarjaPreta);
		rem.setDataFabricacao(DataUtil.criaData(dataFab));
		rem.setDataValidade(DataUtil.criaData(dataValid));
		
		insereRemedio(rem);
		return rem;
	}
	
	public List<Produto> getTodosProdutos() {
		TypedQuery<Produto> q = entityManager.createNamedQuery(
				"Produto.todosRegistrosProdutos", Produto.class);
		List<Produto> result = q.getResultList();
		return result;
	}
	
	public Remedio alteraFarmacia(Long remedioId, Farmacia farmacia) {
		Remedio rem = entityManager.getReference(Remedio.class, remedioId);
		if (rem != null) {
			rem.setFarmacia(farmacia);
		}
		return rem;
	}
	
	public Remedio alteraItem(Long remedioId, Item item) {
		Remedio rem = entityManager.getReference(Remedio.class, remedioId);
		if (rem != null) {
			rem.setItem(item);
		}
		return rem;
	}
	
	public Remedio findRemedio(Long id) {
		Remedio Remedio = entityManager.getReference(Remedio.class, id);
		return Remedio;
	}
	
	public List<Remedio> listaRemedios() {
		TypedQuery<Remedio> query = entityManager.createQuery(
				"SELECT e FROM Remedio e", Remedio.class);
		return query.getResultList();
	}
	
	public void deletaRemedios() {
		TypedQuery<Remedio> query = entityManager.createQuery(
				"DELETE FROM Remedio", Remedio.class);
		query.executeUpdate();
	}
	
	public void insereRemedio(Remedio emp) {
		entityManager.persist(emp);
	}
	
	public void removeRemedio(Long id) {
		Remedio rem = findRemedio(id);
		if (rem != null) {
			entityManager.remove(rem);
		}
	}


}
